CAPTOR FUND MANAGEMENT
An introduction to the openseries Python package
First we set it all up
from openseries.series import OpenTimeSeries
from openseries.frame import OpenFrame
from plotly.offline import init_notebook_mode
from plotly.offline import iplot
init_notebook_mode()
Here we fetch NAV (price per unit) for some of the Captor mutual funds
basket = OpenFrame(
[
OpenTimeSeries.from_open_nav(isin="SE0009807308"),
OpenTimeSeries.from_open_nav(isin="SE0011337195"),
OpenTimeSeries.from_open_nav(isin="SE0010494849"),
OpenTimeSeries.from_open_nav(isin="SE0011670843"),
], weights=[
0.25,
0.25,
0.25,
0.25])
basket = basket.trunc_frame().to_cumret()
We then make a portfolio of the funds based on the provided weights
portfolio = OpenTimeSeries.from_df(basket.make_portfolio("Portfolio"))
basket = basket.add_timeseries(portfolio)
And create a Plotly plot of all the data
figure, _ = basket.plot_series(tick_fmt='.1%', auto_open=False, output_type="div")
We display the plot in the notebook
figure = figure.update_layout(legend=dict(yanchor="bottom", y=0.02, xanchor="right", x=0.98))
iplot(figure, link_text='')
Here we calculate and display a Pandas Dataframe with some analyses
df = basket.all_properties(properties=[
"geo_ret",
"vol",
"ret_vol_ratio",
"sortino_ratio",
"worst_month",
"cvar_down",
"max_drawdown",
"first_indices",
"last_indices",
]
)
df.columns = df.columns.droplevel(level=1)
formats = [
"{:.2%}",
"{:.2%}",
"{:.2f}",
"{:.2f}",
"{:.2%}",
"{:.2%}",
"{:.2%}",
"{:%Y-%m-%d}",
"{:%Y-%m-%d}",
]
for item, f in zip(df.index, formats):
df.loc[item] = df.loc[item].apply(
lambda x: x if isinstance(x, str) else f.format(x)
)
df
| Captor Iris Bond | Captor Dahlia Green Bond | Captor Scilla Nordic Equity | Captor Scilla Global Equity | Portfolio | |
|---|---|---|---|---|---|
| Geometric return | 0.91% | 1.16% | 12.01% | 6.33% | 5.28% |
| Volatility | 4.56% | 1.86% | 13.18% | 13.24% | 6.51% |
| Return vol ratio | 0.20 | 0.62 | 0.91 | 0.48 | 0.81 |
| Sortino ratio | 0.28 | 0.80 | 1.18 | 0.62 | 1.04 |
| Worst month | -3.35% | -4.83% | -9.58% | -12.25% | -6.86% |
| CVaR 95.0% | -0.65% | -0.30% | -2.11% | -2.12% | -1.03% |
| Max drawdown | -7.44% | -5.95% | -27.54% | -30.98% | -16.83% |
| first indices | 2019-02-12 | 2019-02-12 | 2019-02-12 | 2019-02-12 | 2019-02-12 |
| last indices | 2022-01-13 | 2022-01-13 | 2022-01-13 | 2022-01-13 | 2022-01-13 |
Thank you for listening